//
// Created by Gao Shihao on 2022/12/21.
//
#include "plc2llvm/Visitor/strategy/var_decls/VisitVariable_List.h"
#include <plc2llvm/utils/Log.h>

VisitVariable_List* VisitVariable_List::VisitVariable_List_Strategy = new VisitVariable_List();

VisitVariable_List::VisitVariable_List() {
    registerMe(plcst::PLCSTParser::RuleVariable_List);
}


std::any VisitVariable_List::invoke(antlr4::ParserRuleContext *parserCtx, Visitor *visitor) {
    // TODO : 完成这个 invoke 的函数。
    auto* ctx = dynamic_cast<plcst::PLCSTParser::Variable_ListContext*>(parserCtx);

    std::vector<std::string> variable_list;
    for (auto child : ctx->variable_Name()) {
        std::string name = std::any_cast<std::string>(visitor->visit(child));
        Info << name;
        variable_list.push_back(name);
    }

    return variable_list;
}
